package effectiveJava.Generics;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class ArrayUtils {

    //todo Arrays asList只能返回长度不可变的，以及大量操作不支持的list，自己实现返回长度可变的list
    @SafeVarargs/*todo 第一个 T 类似于泛型的类型声明，第二个 T 返回值泛型声明，第三个 T 又参数获得类型，*/
    public static <T> List<T> asList(T... ts) {
        List<T> list = new ArrayList<>();
        Collections.addAll(list, ts);
        return list;
    }


    public static void main(String[] args) {
        List<Integer> list = ArrayUtils.asList(1, 2, 3);
        List list2 = ArrayUtils.asList("A", 2);//当作 Object 处理
        List list3 = ArrayUtils.asList(1, 2, 2.5);//当作 Object 处理
        List list4 = Arrays.asList(1, 2, 2.5);//当作 Object 处理
        List<Number> list5 = ArrayUtils.asList(1, 2, 2.5);//当作 Object 处理
        /*todo 也可以这样*/
        List<Number> list6 = ArrayUtils.<Number>asList(1, 2, 2.5);//当作 Object 处理
        List<Number> list7 = Arrays.<Number>asList(1, 2, 2.5);//当作 Object 处理
    }
}
